package com.seek.util;

import java.math.BigDecimal;
import java.text.NumberFormat;
import java.text.ParseException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class MoneyChangeUtil {

	 public static void main(String[] args) {  
	       // System.out.println(MoneyChangeUtil.fromFenToYuan("200"));  
		 String yuan="0.01";
//		 String suffix=yuan.substring(yuan.indexOf(".")+1,yuan.length());
//		 System.out.println(suffix);
//		 if(suffix.length()==1){
//			 yuan+="0";
//		 }
//		 System.out.println("yuan:"+yuan);
		 System.out.println(MoneyChangeUtil.fromYuanToFen(yuan));
		 System.out.println(MoneyChangeUtil.fromFenToYuan("1"));
	    }  
	      
	    /**  
	     * 分转换为元.  
	     *   
	     * @param fen  
	     *            分  
	     * @return 元  
	     */  
	    public static String fromFenToYuan(final String fen) {  
	        String yuan = "";  
	        final int MULTIPLIER = 100;  
	        Pattern pattern = Pattern.compile("^[1-9][0-9]*{1}");  
	        Matcher matcher = pattern.matcher(fen);  
	        if (matcher.matches()) {  
	            yuan = new BigDecimal(fen).divide(new BigDecimal(MULTIPLIER)).setScale(2).toString();  
	        } else {  
	            System.out.println("参数格式不正确!");  
	        }  
	        return yuan;  
	    }  
	  
	    /**  
	     * 元转换为分.  
	     *   
	     * @param yuan  
	     *            元  
	     * @return 分  
	     */  
	    public static String fromYuanToFen(String yuan) {  
	    	 //处理只有一位数的情况
	    	 //判断是否存在小数位
	    	 if(yuan.indexOf(".")!=-1){//存在小数
	    		 String suffix=yuan.substring(yuan.indexOf(".")+1,yuan.length());
				 if(suffix.length()==1){
					 yuan+="0";
				 }
	    	 }else{//没有小数点
	    		 yuan+=".00";
	    	 }
	        String fen = "";  
	        System.out.println("yuan:"+yuan);
	        Pattern pattern = Pattern.compile("^[0-9]+(.[0-9]{2})?{1}");  
	        Matcher matcher = pattern.matcher(yuan);  
	        if (matcher.matches()) {  
	            try {  
	                NumberFormat format = NumberFormat.getInstance();  
	                Number number = format.parse(yuan);  
	                double temp = number.doubleValue() * 100.0;  
	                // 默认情况下GroupingUsed属性为true 不设置为false时,输出结果为2,012  
	                format.setGroupingUsed(false);  
	                // 设置返回数的小数部分所允许的最大位数  
	                format.setMaximumFractionDigits(0);  
	                fen = format.format(temp);  
	            } catch (ParseException e) {  
	                e.printStackTrace();  
	            }  
	        }else{  
	            System.out.println("参数格式不正确!");  
	        }  
	        return fen;  
	    }  
	
}
